If there is no real device
Xcode Simulator
앱을 개발하다 보면 실 기기대신 시뮬레이터를 통해 테스트하는 경우가 대다수였다.
시뮬레이터의 한계는 어디까지일까?
시뮬레이터의 한계
사실 상식적으로 생각해보면 시뮬레이터에서 되는 할 수 있는 것과 없는 것을 나누는 것이 하드웨어 센서 라는 것을 쉽게 알 수 있다.
애플 공식 개발 문서
위 주소를 통해 공식 문서를 읽어보면 시뮬레이터에서 제공하지 않는 API 등에 대해 나름 자세히 나와있다.

하지만 좀 오래된 문서로 보인다... (예시로 드는 iOS 버전이 8.x...)
해당 내용을 달달 외우는 것도 좋지만,
최대한 나의 경험을 기준으로 가능한 것과 불가능 한 것을 나눠보고자 했다.
불가능한 것
불가능한 것을 먼저 서술 이유는 이를 제외한 모든 것은 가능하다 볼 수 있기 때문이다.
위에서도 언급했듯이 하드웨어적으로 센서가 필요한 경우에는 당연히 시뮬레이터에서 테스트 해볼 수 없다.
카메라, 마이크, 전화 기능 등이 있다.
(검색해본 결과 특이하게 하드웨어 센서를 사용하는 페이스 아이디 는 시뮬레이터에서 테스트해볼 수 있다는 것 같다. 나중에 인증 관련한 기능을 구현할 때 한번 실험해봐야 겠다.)
실제로 카메라 필터 앱을 만든 적이 있는데 이 프로젝트를 진행하면서 시뮬레이터를 사용한 적은 없는 것 같다.
그럼 하드웨어를 센서를 사용하는 GPS도 못쓰는거 아닌가?
맞다. 실제로 내가 어디있는지, 어디로 이동하는지 등은 체크하기 어렵다. 하지만, 고정값을 설정해줄 수는 있다!

해당 경로에서 시뮬레이터의 속성을 변경해주면 된다. 위도와 경도를 입력하면 되는데 서울과 제주도의 위도 차이가 4도인걸 감안한다면 최대한 정확한 값을 입력하는 것이 좋을 것 같다.
추가적으로 회원가입을 구현하다 키보드 올라올 때 작동해야하는 UI 애니메이션이 있었는데 시뮬레이터에서 키보드가 안 올라와 실 기기로만 테스트 할 수 있나..? 라고 생각한 적이 있다.
다행히도 키보드 역시 시뮬레이터의 속성 변경을 통해 올라오게 할 수 있다.

마찬가지로 해당 경로에서 시뮬레이터의 속성을 변경해주면 된다. 해당 속성을 체크하면 실제 노트북과 연결되어 있는 하드웨어 키보드의 입력은 할 수 없게 된다는 점에 유의하자!
가능한 것
가능한 것이라 명명했지만 사실 불가능한 것 이외에는 모두 가능하기 때문에 아래에 서술되는 내용을 시뮬레이터의 장점이자 특징에 가깝다.
먼저 갤러리 관련해서 테스트하기가 실 기기보다 편했다.
갤러리에서 기프티콘을 찾아주는 프로젝트를 진행한 적이 있었는데 실제 기기로 테스트할때는 사진의 양이 많아 시간도 오래 걸리고 테스트용 사진 추가, 삭제가 용이하지 않았다. 하지만 시뮬레이터로 테스트할 땐 테스트용 사진 추가 삭제가 매우 용이했다.
기기별 테스트가 용이하다.
사실 이 이유 때문에 시뮬레이터를 가장 적극적으로 사용한 것 같다. 프로젝트를 진행하며 오토레이아웃을 적용한다고 생각하고 개발을 해도 아직 미숙해서 그런지, 디바이스별로 직접 확인을 해보면 문제가 생기는 경우가 많았다. 이럴 때 다양한 디바이스로 테스트를 해볼 수 있다는 점은 시뮬레이터의 가장 큰 특징인 것 같다.
잘못된 정보나 수정될 정보가 있으면 메일로 알려주시면 감사드리겠습니다.

